using System;
using System.Collections.Generic;

using PMServiceDesk.DataAccess;
using PMServiceDesk.DataType;
using PMServiceDesk.Parameters.Constantes;

namespace PMServiceDesk.BusinessLogic
{
    public class UsuarioLogic
    {
        #region Variables

        private UsuarioData _usuarioData;

        #endregion

        #region Constructores

        public UsuarioLogic()
        {
            _usuarioData = new UsuarioData();
        }

        #endregion

        #region Metodos

        public UsuarioType CargarPorId(string id)
        {
            _usuarioData.FiltrarPorId(id);

            return _usuarioData.Cargar();
        }

        public UsuarioType Login(string usuario, string contrasena)
        {
            _usuarioData.FiltrarPorUsuario(usuario);
            _usuarioData.FiltrarPorConstrasena(contrasena);
            _usuarioData.FiltrarPorEstadoRecurso(Estados.Recurso_Vigente);
            _usuarioData.FiltrarPorRolHabilitado(true);

            return _usuarioData.Cargar();
        }

        public UsuarioType CargarUsuarioPorProyecto(string usuarioId, string proyectoId)
        {
            _usuarioData.FiltrarPorId(usuarioId);
            _usuarioData.FiltrarPorProyectoId(proyectoId);

            return _usuarioData.Cargar();
        }

        public void Grabar(UsuarioType usuario)
        {
            _usuarioData.Grabar(usuario);
        }

        public List<UsuarioType> CargarExplorador(string usuario,string constrasena)
        {
            if(usuario != "") _usuarioData.FiltrarPorUsuario(usuario);
            if(constrasena != "") _usuarioData.FiltrarPorConstrasena(constrasena);

            return _usuarioData.CargarListaVista();
        }

        #endregion
    }
}
